/**
 * Code generation related types
 */

export type DownloadFormat = 'zip' | 'individual';

export interface GeneratedFile {
  filename: string;
  content: string;
  language: string;
  size: number;
  path: string;
  framework: string;
}

export interface CodeTemplate {
  id: string;
  name: string;
  framework: string;
  fileType: string;
  content: string;
  description?: string;
  createdAt: string;
  updatedAt: string;
  createdBy?: string;
  isDefault: boolean;
}

export interface CodeTemplateCategory {
  id: string;
  name: string;
  description: string;
  templateCount: number;
}

export interface CodeGenerationState {
  framework: string;
  generatedFiles: GeneratedFile[];
  downloadFormat: DownloadFormat;
  codePreviewFile: string;
  customTemplates: CodeTemplate[];
  loading: boolean;
  error: string | null;
  isGenerated: boolean;
}

export interface CodeGenerationParams {
  menuData: any;
  framework: string;
  templateIds?: string[];
  customOptions?: Record<string, any>;
}